package com.iamteer.day20;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 主要回顾：BufferedOutputStream IO 流分类： 按数据的流向： 输入流： 输出流：
 * 
 * 按处理的单位： 字节流：字节流读取到的都是文件的二进制数据 字符流：读取数据是以字符为单位（读取到的也是二进制数据，转成也字符） 字符流 = 字节流 +
 * 解码
 * 
 * 输入字节流： --------| InputStream 所有输入字节流的基类（抽象类） ------------| FileInputStream
 * 读取文件数据的输入字节流 ------------| BufferedInputStream 缓冲输入字节流（内维护一个 8kB 的字节数组）
 * 
 * 
 * 输出字节流 --------| OutputStream 所有输出字节流的基类（抽象类） ------------| FileOutputStream
 * 输出文件数据的输出字节流 ------------| BufferedOutputStream 缓冲输出文件数据的输出字节流
 */
public class BufferOutStream {

	public static void main(String[] args) {
		testWrite();
	}

	public static void testWrite() {
		FileOutputStream out = null;
		BufferedOutputStream bStream = null;

		try {
			File file = new File("test.txt");
			out = new FileOutputStream(file);
			bStream = new BufferedOutputStream(out);
			String data = "BufferedOutputStream...";
			bStream.write(data.getBytes());
//			bStream.flush();	//手动把数据写入文件，在关闭文件的时候也会写，在缓冲区满了的时候也会自动写
		} catch (IOException e) {
			throw new RuntimeException(e);
		} finally {
			if (bStream != null) {
				try {
					bStream.close();
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
		}
	}

}
